<?php
	
include 'classpath.php';
include 'includes/constants.php';
include 'includes/variables.php';
include 'includes/functions.php';

// Hier wird der Error-Level extrem sensibel eingestellt (dev)
if (DEBUG_ENABLED) {
	error_reporting(E_ALL);
	ini_set('display_errors', 1);
	
	// DebugQuery includen
	include 'classes/logging/DebugQuery.php';
	
	// Debug_Query erzeugen
	$debug = DebugQuery::getInstance();
}

// Die SessionID soll über cookies gesendet werden
ini_set('session.use_only_cookies', 1);

// Autoloadfunktion registrieren
spl_autoload_register('autoload');

// Top Level Exception handler
set_exception_handler('uncaught_exception_handler');

// Hier werden der index.php alle Sektionen bekannt gemacht
$section = array();
$section['register'] 	= 'register.php';
$section['login'] 		= 'login.php';
$section['logout']		= 'logout.php';
$section['profile']		= 'profile.php';
$section['forum']		= 'forum.php';
$section['pm']			= 'pm.php';
$section['admin']		= 'admin.php';
$section['forum']		= 'forum.php';

// Session starten
session_start();

//Sprache und languagepack laden
if(isset($_SESSION['language']) and is_string($_SESSION['language']) and file_exists('languagepacks/'.$_SESSION['language'].'.php')) {
	// Languagepack laden
	include 'languagepacks/'.$_SESSION['language'].'.php';
} else {
	// Default languagepack laden
	include 'languagepacks/de.php';
}

// Rückgabe Buffer mit 1 initialisieren
$ret = 1;

// Prüfen, welche Sektion geöffnet werden soll
if (isset($_GET['section'], $section[$_GET['section']])) {
	if (file_exists('includes/'.$section[$_GET['section']])) {
		$ret = include 'includes/'.$section[$_GET['section']];
	} else {
		$ret = ERR_COULD_NOT_LOAD_INCLUDE . 'includes/'.$section[$_GET['section']];
	}
} else if (getUserID()) {
	// Defaultinhalt eingeloggt
	$ret = include 'includes/' . $section['profile'];
} else {
	// Defaultinhalt nicht eingeloggt
	$ret = include 'includes/' . $section['login'];
}

// Anfang des Headers einbinden
include 'html/pre_header.html';

// Prüfen, ob eine bestimmte css eingebunden werden soll
if (is_array($ret) and isset($ret['stylesheet']) and is_string($ret['stylesheet'])) {
	echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/".$ret['stylesheet']."\">";
}

// Der Rest des Headers
include 'html/post_header.html';

// Infobereich includen
include 'html/info.html';

// Das Meue einbinden
include 'templates/menu.tpl';

// Der content wird in einen div geladen
echo '<div id="content" class="content_div">';

if (is_array($ret) and isset($ret['filename'], $ret['data']) and
        is_string($ret['filename']) and
        is_array($ret['data'])) {
    // Gültiger return-Wert
    if (file_exists($file = 'templates/'.$ret['filename'])) {
        $data = $ret['data']; // speicher die Arraydaten in eine Variable $data
                              // die dann im Template verwendet werden kann.
        include $file;
    } else {
        // Datei existiert nicht, eine Fehlermeldung anzeigen.
        $data = array();
        $data['msg'] = ERR_FILE_DOES_NOT_EXSIST . $file;
        include 'templates/error.tpl';
    }
} else if (is_string($ret)) {
    // include-Datei lieferte eine String zurück, welches eine Fehlermeldung sein soll
    $data = array();
    $data['msg'] = $ret;
    include 'templates/error.tpl';
} else if (1 === $ret) {
    // return-Anweisung wurde vergessen
    $data = array();
    $data['msg'] = ERR_MISSING_RETURN_IN_INCLUDE;
    include 'templates/error.tpl';
} else {
    // überhaupt ein ungültiger return-Wert
    $data = array();
    $data['msg'] = ERR_INVALID_RETURN_FROM_INCLUDE;
    include 'templates/error.tpl';
}

echo '</div>';

// Das debug div einbinden
if (DEBUG_ENABLED)
	include 'templates/debug.tpl';

// HTML Footer einbinden
include 'html/footer.html';

?>